home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / UTILFILE / UNPROPTC.LZH / GENPATCH.BAS < prev    next >
BASIC Source File  |  1984-02-04  |  2KB  |  54 lines

  1. 10 'GENPATCH - generates patches for PATCHER.BAS
  2. 20 'Copyright 1983 - Data Base Decisions, Atlanta, GA
  3. 90 'If offset is greater than 32,767, BAIC 2.00 must be used.
  4. 100 'DOS 2.00 should be used. If this is not possible, use RAM disk.
  5. 120 CLS
  6. 130 DEFINT A-Z
  7. 140 CLEAR
  8. 150 ON ERROR GOTO 510
  9. 160 INPUT "Old version of file";OFIL$
  10. 170 OPEN "i",#1,OFIL$   'check it is there
  11. 180 CLOSE 1
  12. 190 OPEN "r",#1,OFIL$,1 'open as random
  13. 200 FIELD 1,1 AS O$
  14. 210 INPUT "New version of file";NFIL$
  15. 220 OPEN "i",#2,NFIL$   'check it is there
  16. 230 CLOSE 2
  17. 240 OPEN "r",#2,NFIL$,1 'open as random
  18. 250 FIELD 2,1 AS N$
  19. 260 INPUT "File in which to save patches";DIF$
  20. 270 TMP$="GENPATCH.TMP"
  21. 280 OPEN "o",#3,TMP$    'write to temp file
  22. 290 FOR BYTE!=1 TO LOF(1)       'compare the bytes
  23. 300 GET 1,BYTE!
  24. 310 GET 2,BYTE!
  25. 320 IF O$=N$ THEN PRINT "*";: GOTO 380   'they are equal
  26. 330 OLDVAL=ASC(O$)      'convert to ascii
  27. 340 NEWVAL=ASC(N$)
  28. 350 PRINT #3, BYTE! "," OLDVAL "," NEWVAL
  29. 360 NEWSUM!=NEWSUM!+BYTE!+OLDVAL+NEWVAL  'keep checksum
  30. 365 PRINT: PRINT BYTE!, OLDVAL, NEWVAL,"Checksum ",NEWSUM!
  31. 370 IF NEWSUM! > 32767 THEN NEWSUM!=NEWSUM!-32767: GOTO 370
  32. 380 NEXT BYTE!
  33. 390 CLOSE
  34. 400 OPEN "i",#1,TMP$    'copy temp file to patch file
  35. 410 OPEN "o",#2,DIF$
  36. 420 PRINT "Comments to be put in " DIF$;: INPUT  ""; COMMENT$
  37. 430 PRINT #2,NFIL$ "," NEWSUM! "," CHR$(34) COMMENT$ CHR$(34)   'add record
  38. 440 IF EOF(1) THEN 480
  39. 450 LINE INPUT# 1, X$
  40. 460 PRINT #2, X$
  41. 470 GOTO 440    'copy another record across
  42. 480 CLOSE
  43. 490 KILL TMP$   'delete temp file
  44. 500 END
  45. 510 REM *** error handler ***
  46. 520 UNABLE$="Unable to "
  47. 530 IF ERL=170 OR ERL=190 OR ERL=300 THEN PRINT UNABLE$ "read " OFIL$
  48. 540 IF ERL=220 OR ERL=240 OR ERL=310 THEN PRINT UNABLE$ "read " NFIL$
  49. 550 IF ERL=280 OR ERL=350 THEN PRINT UNABLE$ "write " TMP$
  50. 560 IF ERL=400 OR ERL=450 THEN PRINT UNABLE$ "read " TMP$
  51. 570 IF ERL=410 OR ERL=460 THEN PRINT UNABLE$ "write " DIF$
  52. 580 IF ERL=490 THEN PRINT UNABLE$ "delete " TMP$
  53. 590 RESUME 130
  54.